package com.mdd.front.service;

import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.entity.coupon.CouponIssuing;
import com.mdd.front.validate.commons.PageValidate;
import com.mdd.front.vo.coupon.CouponIssuingVo;
import com.mdd.front.vo.coupon.CouponVo;
import org.checkerframework.checker.units.qual.C;

/**
 * @author shenjian
 * @createTime 2023年02月25日 11:21:00
 */
public interface ICouponService {

    /**
     * 用户优惠券列表
     * @param pageValidate
     * @param type 0 - 查询有效优惠券，1 - 查询无效优惠券
     * @return
     */
    PageResult<CouponVo> couponList(PageValidate pageValidate, Integer type);

    /**
     * 领取优惠券
     * @param issuingSn
     * @param redisKey
     * @param userId
     * @return
     */
    void receiveCoupon(String issuingSn, String redisKey, Integer userId);

    /**
     * 优惠券状态
     * @param issuingSn
     * @return 是否可以领取 1-是，0-否
     */
    CouponIssuingVo couponStatus(String issuingSn);

    /**
     * 获取领取优惠券的状态
     * @param issuingSn
     * @return
     */
    AjaxResult<Object> receiveResultAsync(String issuingSn);

    /**
     * 发放系统优惠券
     * @param type CouponEnum
     * @return
     */
    void issueSystemCoupon(Integer userId, String type);
}
